;(define precisao 0.0000000001)
(define precisao 0.00001)

(define (good-enough? tentativa x)
  (< (abs (- tentativa (/ x tentativa))) precisao))

;(define (good-enough? tentativa x)
;  (< (abs (- (quadrado tentativa) x)) precisao))

(define (quadrado x)
  (* x x))

(define (sqrt-iter tentativa x)
  (if (good-enough? tentativa x)
      tentativa
      (sqrt-iter (improve tentativa x)
                 x)))

(define (improve tentativa x)
  (display (- (/ x tentativa) tentativa))(newline)
  (media tentativa (/ x tentativa)))

(define (media x y)
  (/ (+ x y) 2))

(sqrt-iter 1.0 900000000001000000000000000)